package managers;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import Base.Personne;

@Stateless
public class PersonnesManagerBean implements PersonnesManager {
	@PersistenceContext
	private EntityManager em;

	@SuppressWarnings("unchecked")
	public Personne authentif(String login, String password) {
		Query q = em
				.createQuery(
						"SELECT p FROM Personne p where p.loginPersonne = :login AND p.password = :passw")
				.setParameter("login", login)
				.setParameter("passw", Crypter.cryptPassword(password));
		List<Personne> li = q.getResultList();
		if (li.size() == 1) {
			return li.get(0);
		} else
			return null;
		// return p;
	}

	public void creerPersonne(Personne p) {
		this.em.persist(p);
	}

	@Override
	public int IsLoginUser(String login) {
		Query q = em.createQuery(
				"FROM Personne p where p.loginPersonne = :login").setParameter(
				"login", login);
		return q.getResultList().size();
	}

	public Personne rechercherPersonne(String loginPersonne) {
		Personne p = em.find(Personne.class, loginPersonne);
		return p;
	}

	public void setPersonne(Personne per) {
		Personne p = em.find(Personne.class, per.getIdPersonne());
		p.setLoginPersonne(per.getLoginPersonne());
		p.setNomPersonne(per.getNomPersonne());
		p.setPrenomPersonne(per.getPrenomPersonne());
		p.setMailPersonne(per.getMailPersonne());
		p.setDateNaissancePersonne(per.getDateNaissancePersonne());
		p.setTelephonePersonne(per.getTelephonePersonne());
		em.merge(p);
		em.flush();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Personne> getAllListPersonne() {
		Query q = em.createQuery("FROM Personne p");
		return q.getResultList();
	}

	@Override
	public Personne getPersonneById(int id) {
		return em.find(Personne.class, id);
	}

	public void SupprimerPersonne(int id) {
		Personne p = getPersonneById(id);
		em.remove(p);
	}

}
